xm: Don't die when trying to conect the console to short-lived domains
authorKeir Fraser <keir.fraser@citrix.com>
Thu, 4 Jun 2009 09:46:13 +0000 (10:46 +0100)
committerKeir Fraser <keir.fraser@citrix.com>
Thu, 4 Jun 2009 09:46:13 +0000 (10:46 +0100)
As observed by Mick Joran, if short-lived domain exits cleanly
then os.waitpid() will throw the following exception. This appears
to be because the child process that is used to start the domain
has detached from its parent.

OSError: [Errno 10] No child processes

Cc: Mick Jordan <Mick.Jordan@sun.com>
Signed-off-by: Simon Horman <horms@verge.ent.au>
tools/python/xen/xm/create.py

index fc99b15e7bc37271aeb7bf12c02698f39a86f53c..a9806099f7a84d0d94a3f2ea79807ecb44b88fe1 100644 (file)
@@ -1400,6 +1400,13 @@ def do_console(domain_name):
         for i in range(10):
             # Catch failure of the create process 
             time.sleep(1)
+            try:
+                (p, rv) = os.waitpid(cpid, os.WNOHANG)
+            except OSError:
+                # Domain has started cleanly and then exiting,
+                # the child process used to do this has detached
+                print("Domain has already finished");
+                break
             (p, rv) = os.waitpid(cpid, os.WNOHANG)
             if os.WIFEXITED(rv):
                 if os.WEXITSTATUS(rv) != 0: